package entidades;

import java.io.ByteArrayInputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Parcel;
import android.os.Parcelable;

/**
 * Esta clase representa una promocion comun, con todos sus datos: titulo descripcion
 * fecha de inicio y fin descuento e imagen
 * @author Marco
 *
 */
public class PromocionComun implements Parcelable{
    private String titulo;
    private String descripcion;
    private String id;
    private Date fechaInicio;
    private Date fechaFin;
    private int descuento;
    private byte imagen[];
    private String tipoPago, categoria;
    private String comercio,centroComercial,sFechaFin;

    public PromocionComun(){
	    titulo="";
	    descripcion="";
	    fechaInicio=null;
	    fechaFin=null;
	    descuento=0;
	    imagen=null;
	    comercio="";
	    centroComercial="";
	    tipoPago="";
	    categoria="";
	    sFechaFin="";
    }
    
    public String getsFechaFin() {
		return sFechaFin;
	}

	public void setsFechaFin(String sFechaFin) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			this.sFechaFin = sdf.format(sdf.parse(sFechaFin));
		} catch (ParseException e) {
			
			e.printStackTrace();
		}
	}

	public String getComercio() {
	    return comercio;
    }

    public void setComercio(String parametroComercio) {
	    this.comercio = parametroComercio;
    }

    public String getTipoPago() {
		return tipoPago;
	}

	public void setTipoPago(String parametroTipoPago) {
		this.tipoPago = parametroTipoPago;
	}

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(String parametroCategoria) {
		this.categoria = parametroCategoria;
	}

	public String getCentroComercial() {
		return centroComercial;
	}

	public void setCentroComercial(String parametroCentroComercial) {
		this.centroComercial = parametroCentroComercial;
	}

	public String getTitulo() {
	    return titulo;
    }
    
    public void setTitulo(String parametroTitulo) {
	    this.titulo = parametroTitulo;
    }
    
    public String getDescripcion() {
	    return descripcion;
    }
    
    public void setDescripcion(String parametroDescripcion) {
	    this.descripcion = parametroDescripcion;
    }
    
    public Date getFechaInicio() {
	    return fechaInicio;
    }
    
    public void setFechaInicio(Date parametroFechaInicio) {
	    this.fechaInicio = parametroFechaInicio;
    }
    
    public Date getFechaFin() {
	    return fechaFin;
    }
    
    public void setFechaFin(Date parametroFechaFin) {
	    this.fechaFin = parametroFechaFin;
    }
    
    public int getDescuento() {
	    return descuento;
    }
    
    public void setDescuento(int parametroDescuento) {
	    this.descuento = parametroDescuento;
    }
    
    public String getId() {
		return id;
	}

	public void setId(String parametroId) {
		this.id = parametroId;
	}

	/**
     * Este Metodo devuelve un BitMap, apartir del vector de bytes imagen
     * para poder asignarlo al imageview
     * @return
     */
    public Bitmap getImagen() {
	    Bitmap imagenBitMap;
	    if(imagen != null){
	        imagenBitMap=BitmapFactory.decodeByteArray(imagen,0,imagen.length);
	        ByteArrayInputStream conversor = new ByteArrayInputStream(imagen);
	        return BitmapFactory.decodeStream(conversor);
	    }
        else{
	        return null;
	    }
    }
    
    public void setImagen(byte[] parametroImagen) {
	    this.imagen = parametroImagen;
    }
    /////////////////////////////////////////////////METODOS PARA PARCELEABE///////////////////////////////
    
    /**
     * Aparentemente sirve por si empelas herencia y necesitas saber qeu clase
     * de hijo crear
     * no es el caso
     */
    public int describeContents() {
        return 0;
    }
    /**
     * Escribe el parcel
     * @param outParcel
     * @param flags
     */
    public void writeToParcel(Parcel outParcel, int flags) {
        outParcel.writeString(titulo);
        outParcel.writeString(descripcion);
        outParcel.writeInt(descuento);
        outParcel.writeString(comercio);
        outParcel.writeString(id);
        outParcel.writeString(centroComercial);
        if(imagen!=null){
            outParcel.writeInt(1);
            outParcel.writeInt(imagen.length);
            outParcel.writeByteArray(imagen);
        }
        else{
        	outParcel.writeInt(-1);
        }
        outParcel.writeString(tipoPago);
        outParcel.writeString(categoria);
        outParcel.writeString(sFechaFin);
    }
    
    public static final Parcelable.Creator<PromocionComun> CREATOR
            = new Parcelable.Creator<PromocionComun>() {
        public PromocionComun createFromParcel(Parcel inParcel) {
            return new PromocionComun(inParcel);
         }

        public PromocionComun[] newArray(int size) {
            return new PromocionComun[size];
        }
    };
    
    /** Constructor de la clase
     * que arma la clase apartir de un parcel
     * @param inParcel
     */
    private PromocionComun(Parcel inParcel) {
        titulo=inParcel.readString();
        descripcion=inParcel.readString();
        descuento=inParcel.readInt();
        comercio=inParcel.readString();
        id=inParcel.readString();
        centroComercial=inParcel.readString();
        if(inParcel.readInt()>=0){
            imagen=new byte[inParcel.readInt()];
            inParcel.readByteArray(imagen);
        }
        tipoPago=inParcel.readString();
        categoria =inParcel.readString();
        sFechaFin = inParcel.readString();
    }
}
